// JavaScript的对象（Object），本质上是键值对的集合（Hash结构），但是只能用字符串当作键。这给它的使用带来了很大的限
// 制。
// 为了解决这个问题，ES6提供了Map数据结构。它类似于对象，也是键值对的集合，但是“键”的范围不限于字符串，各种类型的
// 值（包括对象）都可以当作键

var m = new Map();
var o = { p: "Hello World" };
m.set(o, "content")
m.get(o) // "content"
m.has(o) // true
m.delete(o) // true
m.has(o) // false



let map = new Map([
  ['F', 'no'],
  ['T', 'yes'],
]);
console.log(map.keys());
for (let key of map.keys()) {
  console.log(key);
}
// "F"
// "T"

console.log(map.values());
for (let value of map.values()) {
  console.log(value);
}
// "no"
// "yes"


console.log(map.entries());
for (let item of map.entries()) {
  console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"
// 或者
for (let [key, value] of map.entries()) {
  console.log(key, value);
}
// 等同于使用map.entries()
for (let [key, value] of map) {
  console.log(key, value);
}

map.forEach(function (value, key, map)) {
  console.log("Key: %s, Value: %s", key, value);
};


